package com.mjx.algorithm;

/**
 * sunday字符串匹配算法
 * Created by 梅京翔 on 2017 01 17下午 9:34.
 */
public class Sunday {
    public static int sunday(String text,String pattern){
        int i=pattern.length() -1;//初始直接从模式的最后一个开始比较
        while (i < text.length()){
            int result=compare(text,pattern,i);
            if (result > -1)
                return result;
            else {
                int pos=pattern.indexOf(text.charAt(i+1));//查看下一个字符是否在模式串中存在
                if (pos > -1) {//存在
                    i+=pattern.length() - pos;
                }
                else {
                    i+=pattern.length() + 1;
                }
            }
        }
        return -1;
    }

    /**
     * 比较从textIndex开始往回匹配是否存在模式串
     * @param text  主串
     * @param pattern 模式串
     * @param textIndex 主串开始匹配的下表
     * @return 模式串的在主串的起始坐标
     */
    private static int compare(String text,String pattern,int textIndex){
        int j=pattern.length() - 1;
        while (j >= 0){
            if (text.charAt(textIndex) != pattern.charAt(j))
                return -1;
            textIndex--;
            j--;
        }
        return textIndex+1;
    }
    public static void main(String[] args) {
        System.out.println(sunday("substring searching algorithm","search"));
    }
}
